--[[
    该文件为mod的数据补充文件，用于补充mod的物品数据，主要用于批量生成prefab时，相关的prefab设置
]]




local fx = {--特效文件
    --[[
    数据示例：
    {
    --基础部分
    name：必选，服务端上代理fx的prefab名，也就是实际的fx名
    nameoverride：可选，覆盖实体的显示名称，改变玩家看到的名称和描述，设置之后fx会默认可点击可检查
    description：可选，函数，填写后自动加入inspectable组件并设置为descriptionfn属性，参数为inst和view，人物检查物品时优先级为getspecialdescription（特殊描述函数） -descriptionfn （普通描述函数）- description（静态描述文本，也就是STRING里面设置的检查语句
    autorotate：可选，为true时，QE调整视角会跟随代理实体的父体（即特效的父体）一起旋转，前提是父体存在
    update_while_paused：可选，服务器暂停时是否更新相关画面声音表现
    fn：可选，创建特效实体时额外执行的函数，参数是inst和proxy，即客户端的特效实体和服务端的代理实体，注意这里函数的环境是客户端
    fnsever:可选，创建逻辑实体时额外执行的函数，一般用于数据传输，参数是inst,注意环境还是客户端环境
    fntime：可选，配合fn，延迟执行额外函数的时间



    --动画部分
    animatlas:必选，fx的动画文件路径，用于资源注册
    bank：必选，fx的bank
    build：必选，fx的build
    anim：可选，fx默认播放的动画名称，需要配合shouldplayanim使用
    tint：可选，颜色向量，由于RGB本身就是三维向量，官方为了方便就直接使用了V3来计算，并且本身颜色就是可计算的
    tintalpha：可选，透明度
    transform：可选，大小缩放，同样是三维向量
    bloom：可选，是否启用辉光效果，Bloom是一种图形渲染特效，让明亮的区域产生发光/辉光的视觉效果，模拟现实中强光照射到镜头时的光晕现象。
    shaders：可选，配合boom属性，辉光效果的着色器，这边用的是官方默认的着色器，里面是一些视觉上的算法之类，默认不填写使用的是官方的shaders/anim.ksh
    animqueue：可选，控制动画销毁的时机，false是动画结束时销毁，true是动画队列结束时销毁
    shouldplayanim：可选，是否有默认的播放动画，，true有默认播放动画，false没有默认播放动画,需要配合anim
    noendinganim：可选，动画播放完之后是否需要移除特效实体，true不移除，false移除


    
    --以下设置fx的动画面数，选择其中一个，同时写判断顺序是从上到下
    twofaced：可选，设置fx两个面
    eightfaced：可选，设置fx8个面
    sixfaced：可选，设置fx6个面
    nofaced：可选，true为单面，false为4个面


    --以下是声音部分
    sound：可选，字符串，播放的音频，一般配合sounddelay，会在指定延迟时间后播放音频
    sound2：同sound1，不过配合的是sounddelay2,从这可以看出官方支持同时播放多种声音
    sounddelay：可选，不存在则是下一帧播放声音，配合sound
    sounddelay2：同sounddelay，配合sound2
    
    
    }
    ]]



    {--万物之树的特效
        animatlas = 'anim/TSQT_trees_beautiful.zip', 
        name = 'tsqt_trees_beautiful_fx', 
        autorotate = true,
        bank = 'TSQT_trees_beautiful',
        build = 'TSQT_trees_beautiful',
        shouldplayanim = false,
        anim = "cloud", -- 默认动画
        noendinganim = true, -- 防止动画播放完成后自动移除
        fnsever = function(inst)
            inst.tsqt_anim_name = net_string(inst.GUID, "tsqt_anim_name", "tsqt_anim_name_dirty")
            inst.tsqt_symbol_override = net_string(inst.GUID, "tsqt_symbol_override", "tsqt_symbol_override_dirty")
            inst.tsqt_symbol_target = net_string(inst.GUID, "tsqt_symbol_target", "tsqt_symbol_target_dirty")
        end,
        fn = function(inst, proxy)
            -- 从代理实体的网络变量获取动画配置信息
            local anim_name = proxy.tsqt_anim_name:value()
            if anim_name and anim_name ~= "" then
                inst.AnimState:PlayAnimation(anim_name, true) -- true表示循环播放
            end
            
            -- 设置符号覆盖
            local symbol_override = proxy.tsqt_symbol_override:value()
            local symbol_target = proxy.tsqt_symbol_target:value()
            if symbol_override and symbol_override ~= "" and symbol_target and symbol_target ~= "" then
                inst.AnimState:OverrideSymbol(symbol_override, 'TSQT_trees_beautiful', symbol_target)
            end
            
            -- 设置随机时间偏移
            inst.AnimState:SetTime(4 * math.random())
        end,
    },
}





return {
    fx = fx,
}